package com.hsmw.api.vo;

import com.baomidou.mybatisplus.annotation.TableField;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.hsmw.common.base.BaseModel;
import com.hsmw.domain.HsmwPicture;
import com.hsmw.domain.vo.DriverDetailVO;
import com.hsmw.domain.vo.PMGoingOrderVO;
import io.swagger.annotations.ApiModelProperty;
import lombok.Data;
import org.springframework.format.annotation.DateTimeFormat;

import java.io.Serializable;
import java.time.LocalDateTime;
import java.util.List;

@Data
public class BeanUtilsOrderVO extends BaseModel {

    private static final long serialVersionUID = 1L;

    private Boolean flag;

    @ApiModelProperty(value = "订单编号")
    private String orderSn;

    @ApiModelProperty(value = "施工单位ID")
    private String constructionUnitId;

    @ApiModelProperty(value = "施工单位名称")
    private String constructionUnitName;

    @ApiModelProperty(value = "联系人")
    private String constructionUnitLinkMan;

    @ApiModelProperty(value = "联系方式")
    private String constructionUnitTel;


    @ApiModelProperty(value = "项目ID")
    private String itemId;

    @ApiModelProperty(value = "项目名称")
    private String itemName;

    @ApiModelProperty(value = "项目施工位置")
    private String itemPosition;

    @ApiModelProperty(value = " 项目施工位置 经度")
    private String lng;

    @ApiModelProperty(value = "项目施工位置 纬度")
    private String lat;

    @ApiModelProperty(value = "施工部位")
    private String constructionPosition;

    @ApiModelProperty(value = "混凝土编号")
    private String concreteNumber;

    @ApiModelProperty(value = "塌落度")
    private String slump;

    @ApiModelProperty(value = "预计方量")
    private String expectVolume;

    @ApiModelProperty(value = "订单状态：待发布、发布中、已接单、进行中、已完成、已结束、已取消")
    private String orderStatus;

    @ApiModelProperty(value = "备注")
    private String remark;

    @ApiModelProperty(value = "支泵位置图片")
    private String branchPumpPic;

    @ApiModelProperty(value = "联系人姓名")
    private String createName;

    @ApiModelProperty(value = "联系人手机号")
    private String createUserTel;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @ApiModelProperty(value = "到达时间")
    private LocalDateTime reachTime;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "实时方量更新时间")
    private LocalDateTime realVolumeTime;

    @ApiModelProperty(value = "工长确认方量")
    private String foremanVolume;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单结束时间")
    private LocalDateTime endTime;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "订单发布时间")
    private LocalDateTime publishTime;

    @TableField(exist = false)
    private String statisticsTime;


    @ApiModelProperty(value = "派单类型")
    private String distributeType;


    @ApiModelProperty(value = "所需车数量")
    private String reqCount;

    @ApiModelProperty(value = "实时累计方量")
    private String realTimeVolume;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "开始干活时间")
    private LocalDateTime startWorkTime;

    @ApiModelProperty(value = "搅拌站")
    private String concreteBatchingPlant;

    @ApiModelProperty(value = "问题内容")
    private String problemInfo;

    @ApiModelProperty(value = "问题语音")
    private String problemAudioUrl;

    @ApiModelProperty(value = "问题语音备注ID")
    private String problemAudioId;


    @ApiModelProperty(value = "项目位置详情")
    private String itemPositionDetail;


    @ApiModelProperty(value = "语音长度")
    private Integer problemAudioSeconds;

    @ApiModelProperty(value = "语音备注")
    private String audioRemark;


    @ApiModelProperty(value = "语音备注Id")
    private String audioRemarkId;

    @ApiModelProperty(value = "订单识别码")
    private String identityNum;

    @ApiModelProperty(value = "版本号")
    private Integer version;


    @ApiModelProperty(value = "搅拌站确认方量")
    private String ensureVolume;


    @ApiModelProperty("司机名称")
    @TableField(exist = false)
    private List driverList;

    @ApiModelProperty
    @TableField(exist = false)
    private String queryReachTime;

    @ApiModelProperty
    @TableField(exist = false)
    private String queryEndTime;

    @ApiModelProperty("发布时间")
    @TableField(exist = false)
    private String remainingReleaseTime;

    @ApiModelProperty("超时时间")
    @TableField(exist = false)
    private String timeOutInfo;

    @ApiModelProperty("超时时间")
    @TableField(exist = false)
    private int receivedNumber;

    @ApiModelProperty("工长电话")
    @TableField(exist = false)
    private String userPhone;

    @ApiModelProperty("支泵位置")
    @TableField(exist = false)
    private List<HsmwPicture> hsmwPictures;

    @ApiModelProperty("司机总方量")
    @TableField(exist = false)
    private Double sumDriVolume;

    @ApiModelProperty("其他备注")
    private String otherRemark;


    @ApiModelProperty("车ID")
    private String vehicleId;

    @ApiModelProperty(value = "审核前的状态")
    private String orderStatusBefore;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "打卡时间")
    private LocalDateTime clockInTime;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "出发时间")
    private LocalDateTime setoutTime;


    @ApiModelProperty("底盘公里数")
    private String chassisKilometers;

    @ApiModelProperty("挪泵次数")
    private String movePumpCount;

    @ApiModelProperty("耗油量")
    private String fuelConsumption;

    @ApiModelProperty(value = "司机方量")
    private String driverVolume;


    @ApiModelProperty(value = "搅拌站ID")
    private String concretePlantId;


    @ApiModelProperty(value = "搅拌站名称")
    private String concretePlantName;


    @ApiModelProperty(value = "选中的车辆数量")
    @TableField(exist = false)
    private Integer selectedCount;

    @ApiModelProperty(value = "订单数量")
    @TableField(exist = false)
    private Integer orderCount;

    @ApiModelProperty(value = "预计方量总计")
    @TableField(exist = false)
    private Integer expectVolumeSum;

    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    @ApiModelProperty(value = "接单时间")
    private LocalDateTime acceptOrderTime;

    @ApiModelProperty(value = "是否为强制派单 默认0 否，1 是")
    private String forces;

    @ApiModelProperty(value = "发灰状态 0. 未开始 ; 1.进行中 2.暂停 3. 结束")
    private String shipmentStatus;

    @ApiModelProperty(value = "是否需要泵送 0. 否 ; 1.是")
    private String ifTruckRequired;

    @ApiModelProperty(value = "是否需要混凝土 0. 否 ; 1.是")
    private String ifConcreteRequired;

    @ApiModelProperty(value = "是否已经 确认方量 0. 未确认 1. 已确认")
    private String ensureVolumeFlag;

    @ApiModelProperty(value = "是否已经发送短信 0. 否 ; 1.是")
    private String noticeFlag;


    @ApiModelProperty(value = "是否混天凝叫车 0  是否 1 是")
    private String ifSelfChoose;


    @ApiModelProperty(value = "订单负责工长ID")
    private String foremanUserId;


    @JsonFormat(shape = JsonFormat.Shape.STRING, pattern = "yyyy-MM-dd HH:mm")
    @DateTimeFormat(pattern = "yyyy-MM-dd HH:mm")
    @ApiModelProperty(value = "确认方量时间")
    private LocalDateTime ensureTime;

    @ApiModelProperty(value = "司机详情列表")
    @TableField(exist = false)
    private List<DriverDetailVO> driverDetailVOS;

    @ApiModelProperty(value = "司机详情列表")
    @TableField(exist = false)
    private String imeiNum;

    @ApiModelProperty(value = " 车牌号 ")
    @TableField(exist = false)
    private String vehiclePlate;

    @ApiModelProperty(value = "手机定位信息")
    @TableField(exist = false)
    private String mobileLocate;


    @ApiModelProperty(value = "车辆位置信息")
    @TableField(exist = false)
    private String vehicleLocation;

    @ApiModelProperty(value = "车辆位置信息")
    @TableField(exist = false)
    private PMGoingOrderVO goingOrderVO;

}
